package controllDAO;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

import controllBen.InterfaceCRUD;
import controllBen.Leitor;

public class DaoLeitor extends DaoConnection implements InterfaceCRUD<Leitor> {

	public DaoLeitor() throws ClassNotFoundException {
		super();
	}

	Connection conn = null;
	PreparedStatement ps = null;
	ResultSet rs = null;
	String sql = null;

	@Override
	public void insert(Leitor objeto) {
		sql = "INSERT INTO leitor(id, nome, email, login, senha, status) VALUES (NEXTVAL('seq_leitor'), ?, ?, ?, ?, ?)";
		try {
			conn = getConnection();
			ps = conn.prepareStatement(sql);

			ps.setString(1, objeto.getNome());
			ps.setString(2, objeto.getEmail());
			ps.setString(3, objeto.getLogin());
			ps.setString(4, objeto.getSenha());
			ps.setString(5, objeto.getStatus());

			ps.execute();

			ps.close();
			conn.close();

		} catch (SQLException e) {
			e.printStackTrace();
		}
	}

	@Override
	public void update(Leitor objeto) {
		sql = "UPDATE leitor set nome = ?, email = ?, login = ?, senha = ? WHERE id = ?";

		try {
			conn = getConnection();
			ps = conn.prepareStatement(sql);

			ps.setString(1, objeto.getNome());
			ps.setString(2, objeto.getEmail());
			ps.setString(3, objeto.getLogin());
			ps.setString(4, objeto.getSenha());

			ps.setInt(5, objeto.getId());

			ps.execute();

			ps.close();
			conn.close();

		} catch (SQLException e) {
			e.printStackTrace();
		}
	}

	@Override
	public void delete(int id) {
		sql = "delete from leitor WHERE id = ?";

		try {
			conn = getConnection();
			ps = conn.prepareStatement(sql);

			ps.setInt(1, id);

			ps.execute();

			ps.close();
			conn.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}

	@Override
	public Leitor getId(int id) {
		sql = "select id, nome, email, login, senha, status from leitor WHERE id = ?";
		Leitor leitor = null;
		try {
			conn = getConnection();
			ps = conn.prepareStatement(sql);
			ps.setInt(1, id);
			rs = ps.executeQuery();

			leitor = new Leitor();

			leitor.setId(rs.getInt("id"));
			leitor.setNome(rs.getString("nome"));
			leitor.setEmail(rs.getString("email"));
			leitor.setLogin(rs.getString("login"));
			leitor.setSenha(rs.getString("senha"));
			leitor.setStatus(rs.getString("status"));

			conn.close();
			ps.close();
			rs.close();

		} catch (SQLException e) {
			e.printStackTrace();
		}
		return leitor;
	}

	@Override
	public ArrayList<Leitor> listaTodos() {
		ArrayList<Leitor> lista = new ArrayList<>();
		sql = "select id, nome, email, login, senha, status from leitor";

		try {
			conn = getConnection();
			ps = conn.prepareStatement(sql);
			rs = ps.executeQuery();
			Leitor leitor = null;
			while (rs.next()) {
				leitor = new Leitor();
				leitor.setId(rs.getInt("id"));
				leitor.setNome(rs.getString("nome"));
				leitor.setEmail(rs.getString("email"));
				leitor.setLogin(rs.getString("login"));
				leitor.setSenha(rs.getString("senha"));
				leitor.setStatus(rs.getString("status"));

				lista.add(leitor);
			}

			conn.close();
			ps.close();
			rs.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return lista;
	}

	public Leitor getLoginSenha(String login, String senha) {
		Leitor leitor = null;
		sql = "select id, nome, email, login, senha, status from leitor WHERE login = ? and senha = ?";
		System.out.println(login + " " + senha);
		try {
			conn = getConnection();
			ps = conn.prepareStatement(sql);

			System.out.println(login + " " + senha);

			ps.setString(1, login);
			ps.setString(2, senha);

			rs = ps.executeQuery();
			if (rs.next()) {
				leitor = new Leitor();

				leitor.setId(rs.getInt("id"));
				leitor.setNome(rs.getString("nome"));
				leitor.setEmail(rs.getString("email"));
				leitor.setLogin(rs.getString("login"));
				leitor.setSenha(rs.getString("senha"));
				leitor.setStatus(rs.getString("status"));
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}

		return leitor;
	}
	
	public boolean ifLoginExiste(String login){
		sql = "select login from leitor where login = ?";
		boolean retorno = false;
		try {
			conn = getConnection();
			ps = conn.prepareStatement(sql);
			
			ps.setString(1, login);
			
			rs = ps.executeQuery();

			if(rs.next()){
				retorno = true;
			}			
			
			ps.close();
			conn.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return retorno;
	}

	@Override
	public ArrayList<Leitor> getData() {
		// TODO Auto-generated method stub
		return null;
	}

}
